package edu.zut.pioneer.notice;

import edu.zut.pioneer.base.controller.GenericController;
import edu.zut.pioneer.commodity.domain.Commodity;
import edu.zut.pioneer.notice.domain.Notice;
import edu.zut.pioneer.notice.NoticeManager ;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping(value="/notice",produces = { MediaType.APPLICATION_JSON_VALUE })
public class NoticeController extends GenericController<Notice, Long, NoticeManager> {

    public static final Logger logger = LogManager.getLogger(edu.zut.pioneer.notice.NoticeController.class.getName());

    NoticeManager noticeManager;


    @Resource
    public void setStockManager(NoticeManager noticeManager) {
        this.noticeManager = noticeManager;
        this.manager = this.noticeManager;
    }

    @RequestMapping(value="/findAll/{page}/{pageSize}",method = {RequestMethod.GET,RequestMethod.POST})
    public Map<String,Object> findAllProduct(@PathVariable("page") int page, @PathVariable("pageSize") int pageSize){
        Sort sort = Sort.by(Sort.Direction.DESC,"id");
        Pageable pageable = PageRequest.of(page,pageSize, sort);
        Page<Notice> list = noticeManager.findAll(pageable);
        HashMap<String,Object> map = new HashMap<>();
        map.put("number",list.getTotalElements());
        map.put("userList",list.getContent());
        logger.info("----------->"+list.getContent());
        return map;
    }

}
